package fr.miage.ageco.web.beans;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import org.primefaces.event.RowEditEvent;
import org.primefaces.event.SelectEvent;
import org.primefaces.event.UnselectEvent;
import org.springframework.beans.factory.annotation.Autowired;

import fr.miage.ageco.dataaccess.bo.EtapeProjet;
import fr.miage.ageco.dataaccess.services.EtapeProjetService;

@ViewScoped
@ManagedBean
public class EtapeProjetBean implements Serializable {



	private static final long serialVersionUID = -7207623343922941798L;

	EtapeProjetService etapeProjetService;

	private List<EtapeProjet> listEtapeProjet;
	private List<EtapeProjet> filteredEtapeProjet;
	private EtapeProjet selectedEtapeProjet;
	

	private int id;
	private String nom;
	private String dateDebut;
	private String dateFin;
	private int idProjet;

	public EtapeProjetBean() {

	}

	@PostConstruct
	public void init() {
		listEtapeProjet = getAllEtapeProjet();
	}

	// Méthodes pour l'IHM
	
	public List<EtapeProjet> getAllEtapeProjet() {
		return etapeProjetService.getAllEtapeProjet();
	}

	public List<EtapeProjet> getEtapeProjetForEmploye(int id) {
		return etapeProjetService.getEtapeProjetForEmploye(id);
	}
	
	public List<EtapeProjet> getEtapeProjetForProjet(int id) {
		return etapeProjetService.getEtapeProjetForProjet(id);
	}
	

	// Ajout
	public String insertEtapeProjet() {

		EtapeProjet etapeProjet = new EtapeProjet();

		// getNom() pour récupérer le nom saisi par l'utilisateur dans le champ
		etapeProjet.setNom(getNom());
		etapeProjet.setDateFin(getDateFin());
		etapeProjet.setDateDebut(getDatedebut());
		etapeProjet.setIdProjet(getIdProjet());

		// Ajout dans la BD
		etapeProjetService.insertEtapeProjet(etapeProjet);

		// Rechargement de la liste
		listEtapeProjet = getAllEtapeProjet();
		
		FacesMessage msg = new FacesMessage("Etape projet ajoutée : ",
				(etapeProjet.getNom() ));
		FacesContext.getCurrentInstance().addMessage(null, msg);
		return "";
	}
/*
	// Modification
	public void onEdit(RowEditEvent event) {
		FacesMessage msg = new FacesMessage("Employé édité :",
				((EtapeProjet) event.getObject()).getId() + "");
		// Modification de l'objet en base
		etapeProjetService.updateEtapeProjet((EtapeProjet) (event.getObject()));
		// Rechargement de la liste
		listEtapeProjet = getAllEtapeProjet();
		
		FacesContext.getCurrentInstance().addMessage(null, msg);
	}

	// suppression
	public void onCancel(RowEditEvent event) {
		FacesMessage msg = new FacesMessage("Employé supprimé :",
				((EtapeProjet) event.getObject()).getId()+"");
		//suppression dans le tableau
		listEtapeProjet.remove((EtapeProjet) event.getObject());
		//suppression en base
		etapeProjetService.deleteEtapeProjet((EtapeProjet) event.getObject());
		//Affichage du message
		FacesContext.getCurrentInstance().addMessage(null, msg);
	}
	
	// Sélection d'une ligne
	public void onRowSelect(SelectEvent event) {  
        FacesMessage msg = new FacesMessage("Employé ", ((EtapeProjet) event.getObject()).getId() + " sélectionné"); 
       // selectedEtapeProjet = (EtapeProjet) event.getObject();
  
        FacesContext.getCurrentInstance().addMessage(null, msg);  
    }  
	
	// Déselection de la ligne
    public void onRowUnselect(UnselectEvent event) {  
        FacesMessage msg = new FacesMessage("Employé ", ((EtapeProjet) event.getObject()).getId() + " desélectionné");  
  
        FacesContext.getCurrentInstance().addMessage(null, msg);  
    }*/

	public EtapeProjetService getEtapeProjetService() {
		return etapeProjetService;
	}

	public void setEtapeProjetService(EtapeProjetService etapeProjetService) {
		this.etapeProjetService = etapeProjetService;
	}

	public List<EtapeProjet> getListEtapeProjet() {
		return listEtapeProjet;
	}

	public void setListEtapeProjet(List<EtapeProjet> listEtapeProjet) {
		this.listEtapeProjet = listEtapeProjet;
	}

	public List<EtapeProjet> getFilteredEtapeProjet() {
		return filteredEtapeProjet;
	}

	public void setFilteredEtapeProjet(List<EtapeProjet> filteredEtapeProjet) {
		this.filteredEtapeProjet = filteredEtapeProjet;
	}

	public EtapeProjet getSelectedEtapeProjet() {
		return selectedEtapeProjet;
	}

	public void setSelectedEtapeProjet(EtapeProjet selectedEtapeProjet) {
		this.selectedEtapeProjet = selectedEtapeProjet;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	public String getDatedebut() {
		return dateDebut;
	}

	public void setDatedebut(String dateDebut) {
		this.dateDebut = dateDebut;
	}

	public String getDateFin() {
		return dateFin;
	}

	public void setDateFin(String dateFin) {
		this.dateFin = dateFin;
	}

	public int getIdProjet() {
		return idProjet;
	}

	public void setIdProjet(int idProjet) {
		this.idProjet = idProjet;
	}  


}
